extensions/double: adds some more paths
authorØyvind Kolås <pippin@gimp.org>
Sat, 7 Apr 2018 15:52:02 +0000 (17:52 +0200)
committerØyvind Kolås <pippin@gimp.org>
Sat, 7 Apr 2018 16:10:41 +0000 (18:10 +0200)
extensions/double.c

index f592cb924b16d8a5a36e0a812846e53992accda7..60765a99973cd30bb8be52b74da7f109233bce78 100644 (file)
@@ -195,6 +195,30 @@ conv_rgbD_gamma_rgbD_linear (const Babl *conversion,unsigned char *src,
      }
 }
 
+
+static INLINE void
+conv_rgbD_linear_rgbaD_linear (const Babl *conversion,unsigned char *src, 
+                               unsigned char *dst, 
+                               long           samples)
+{
+   const Babl  *space = babl_conversion_get_destination_space (conversion);
+   const Babl **trc   = (void*)space->space.trc;
+   double *fsrc = (double *) src;
+   double *fdst = (double *) dst;
+   int n = samples;
+
+   while (n--)
+     {
+       *fdst++ = babl_trc_to_linear (trc[0], *fsrc++);
+       *fdst++ = babl_trc_to_linear (trc[1], *fsrc++);
+       *fdst++ = babl_trc_to_linear (trc[2], *fsrc++);
+       *fdst++ = 1.0;
+     }
+}
+
+
+#define conv_rgbD_gamma_rgbaD_gamma conv_rgbD_linear_rgbaD_linear
+
 #define o(src, dst) \
   babl_conversion_new (src, dst, "linear", conv_ ## src ## _ ## dst, NULL)
 
@@ -259,6 +283,12 @@ init (void)
   o (rgbaD_linear, rgbD_linear);
   o (rgbaD_gamma,  rgbD_gamma);
 
+
+  o (rgbD_linear, rgbaD_linear);
+  o (rgbD_gamma, rgbaD_gamma);
+  o (rgbaD_linear, rgbD_linear);
+  o (rgbaD_gamma, rgbD_gamma);
+
   return 0;
 }